home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Collection of Tools & Utilities
/
Collection of Tools and Utilities.iso
/
system
/
vectmap.zip
/
VECTMAP.PAS
< prev
Wrap
Pascal/Delphi Source File
|
1986-05-11
|
4KB
|
156 lines
(*
* vectmap - map system interrupt vectors
*
* author: S. H. Smith, 10-May-86
*
*)
{$P512,d-}
type
vector = record
offset: integer;
segment: integer;
end;
anystring = string[40];
var
interrupt: array[0..$FF] of vector absolute 0:0;
function hex(i: integer): anystring;
var
h: anystring;
d: integer;
c: char;
begin
h := '';
for d := 1 to 4 do
begin
if (i and $0f) > 9 then
c := chr((i and $0f) + ord('0') + 7)
else
c := chr((i and $0f) + ord('0'));
h := c + h;
i := i shr 4;
end;
hex := h;
end;
procedure display_vector(n: integer);
var
s: integer;
o: integer;
begin
s := interrupt[n].segment;
o := interrupt[n].offset;
if (s = 0) and (o = 0) then
exit;
write( copy(hex(n),3,2), ' ',
hex(s),':',
hex(o),' ');
case s of
$0000: write(' Int vectors ');
$0040: write(' ROM BIOS data ');
$0050: write(' DOS data ');
$0070: write(' IO.SYS drivers ');
$c800: write(' Fixed disk ROM ');
$f000: write(' System ROM ');
$fc00: write(' BIOS ROM ');
else
if s = cseg then
write(' User program ')
else if s = interrupt[$20].segment then
write(' DOS ')
else if s = interrupt[$21].segment then
write(' DOS enhancement ')
else if s = interrupt[$24].segment then
write(' COMMAND.COM ')
else if (s < cseg) and (s > interrupt[$20].segment) then
write(' Resident utility ')
else
write(' ? ');
end;
case n of
$00: write(' Division by zero');
$01: write(' Single step');
$02: write(' Non-maskable interrupt');
$03: write(' DEBUG breakpoint');
$04: write(' Arithmetic overflow');
$05: write(' Print screen');
$08: write(' Hardware clock tick');
$09: write(' Keyboard action');
$0d: write(' Vertical retrace');
$0e: write(' Diskette attention (completion)');
$0f: write(' Printer control');
$10: write(' Video display services');
$11: write(' Equipment list services');
$12: write(' Memory size services');
$13: write(' Diskette services');
$14: write(' Communication services');
$15: write(' Cassette tape services');
$16: write(' Standard keyboard services');
$17: write(' Printer services');
$18: write(' Activate ROM basic');
$19: write(' Boot-strap start-up');
$1a: write(' Time and date services');
$1b: write(' Keyboard break handler');
$1c: write(' Clock tick handler');
$1d: write(' Video control parameter table');
$1e: write(' Disk base table');
$1f: write(' High video graphics character table');
$20: write(' DOS program terminate service');
$21: write(' DOS function call services');
$22: write(' User program terminate handler');
$23: write(' User keyboard break handler');
$24: write(' User critical error handler');
$25: write(' DOS absolute disk read');
$26: write(' DOS absolute disk write');
$27: write(' DOS terminate and stay resident');
$44: write(' Low video graphics character table (PCjr)');
$48: write(' Translate PCjr keyboard');
$49: write(' Keyboard-supplement device translation table');
else write(' ?');
end;
writeln;
flush(output);
end;
var
int: integer;
begin
writeln;
write('VECTMAP - Map of system interrupt vectors');
writeln(' 10-May-86, S.H.Smith');
writeln;
writeln;
writeln('Int Handler Handler Interrupt');
writeln('no address description description');
writeln('--- --------- --------------- ----------------------');
for int := 0 to $ff do
display_vector(int);
end.